Field
Embodiments of the present disclosure generally relate to a network device that facilitates communication between heterogeneous devices. More particularly, the disclosure relates to systems and methods implemented in an intermediate network device for realizing communication between devices/systems that are typically incompatible with each other with respect to, for instance, their use of different network layer protocols.
Description of the Related Art
Every device on an Internet Protocol (IP) network is given a unique identity by assigning an IP address to it. For a particular network device, such as a client device, to communicate with other network devices or web servers within a network, the device must have a unique IP address. IP protocol version 4 (IPv4), defined by RFC-791, specifies 32 bits for the IP address, which theoretically gives about 4,294,967,296 unique IP addresses. However, there are actually only between 3.2 and 3.3 billion available IP addresses since the address space is separated into classes and some addresses are set aside for multicasting, testing and other special uses. As more and more devices are becoming Internet enabled, the number of IP addresses available via IPv4 is insufficient for assigning unique IP addresses to all these devices.
It is expected that the number of available IPv4 address will be exhausted in the near future. To address this issue, the Internet Engineering Task Force (IETF) proposed a solution by introducing an Internet Protocol Version 6 (IPv6), which is defined by RFC-2460. IPv6 is intended to replace IPv4, which still carries the vast majority of Internet traffic. Introduction of IPv6 provides 128 bits for the IP address, which increases the pool of available IP addresses.
A majority of present day devices are still using IPv4. One of the reasons for this is the fact that the proposed IPv6 protocol is not backward compatible with IPv4, meaning that the IPv6 devices cannot directly communicate with IPv4 devices. As such, aside from dual stack devices that support communication over both IPv4 and IPv6, the IPv4 and IPv6 networks are effectively two separate Internets. If a client only has an IPv4 address, it is not able to communicate over IPv6, and vice versa.
Typically, in order to facilitate communication between two devices, a first device (e.g., a client) performs a Domain Name System (DNS) query to a DNS server to obtain an IP address of a second device (e.g., a particular server) with which the client device wishes to communicate. The DNS server, translates the more easily human-readable and memorizable text-based domain names, such as www.xyz.com, to their respective corresponding numerical IP addresses, such as 192.168.92.10, needed for the purpose of locating computer services and devices worldwide, wherein the DNS is an essential component of the functionality of the Internet and maintains a mapping between domain names and their corresponding IP addresses.
Once the IP address of a particular server is obtained by the client from the DNS device, the client can then attempt to communicate with the particular server directly using the obtained IP address. The client is configured with its own IP address, which it uses to identify itself to the server when communicating with such server. A problem occurs, however, when a client sends a DNS query for an “AAAA” record (which is associated with an IPv6 address) and the DNS server does not have an “AAAA” record for the specified host system. However, it is possible that the DNS server may have an “A” record (which is associated with an IPv4 address) for the specified host system. At present, a DNS query for an “AAAA” record of a host system having only an IPv4 presence or a DNS query for an “A” record of a host system having only an IPv6 presence results in the DNS server responding that there is no IP information for the specified host system. However, it is possible that the DNS server actually has a record for the other type of record (e.g., “A” and “AAAA,” respectively), but the DNS server does not return the other record.
Also, at present, in order to enable bidirectional communication, it is required that both the client and the server use the same protocol, i.e. both are either IPv4 compliant or both are IPv6 compliant. For instance, if the client device is an IPv4 device and the server device is an IPv6 device, they will not be able to communicate as they both need to use the same IP address version in order to communicate with each other. If a client is a single stack IPv4 device, it will not able to communicate with a second device that is using IPv6, and vice-versa. There is therefore a need for an enhanced/improved/modified intermediate network device that facilitates packet translation from IPv4 to IPv6 and visa-versa to enable communications between heterogeneous devices using different network layer protocols (e.g., between IPv4 devices and IPv6 devices).